package com.jhgsys.internal.workflow.service;

import com.jhgsys.internal.workflow.entity.WorkflowNodeButton;
import com.jhgsys.internal.common.entity.QueryRequest;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;

import java.util.List;

/**
 * 流程节点按钮 Service接口
 *
 * @author fenghaijun
 * @date 2024-07-19 09:18:06
 */
public interface IWorkflowNodeButtonService extends IService<WorkflowNodeButton> {
    /**
     * 查询（分页）
     * @author fenghaijun
     * @date 2024-07-19 09:18:06
     * @param request QueryRequest
     * @param workflowNodeButton workflowNodeButton
     * @return IPage<WorkflowNodeButton>
     */
    IPage<WorkflowNodeButton> findWorkflowNodeButtons(QueryRequest request, WorkflowNodeButton workflowNodeButton);

    /**
     * 查询（所有）
     * @author fenghaijun
     * @date 2024-07-19 09:18:06
     * @param workflowNodeButton workflowNodeButton
     * @return List<WorkflowNodeButton>
     */
    List<WorkflowNodeButton> findWorkflowNodeButtons(WorkflowNodeButton workflowNodeButton);

    /**
     * 根据条件查询
     * @author fenghaijun
     * @date 2024-07-19 09:18:06
     * @param workflowNodeButton workflowNodeButton
     * @return WorkflowNodeButton
     */
    WorkflowNodeButton findWorkflowNodeButton(WorkflowNodeButton workflowNodeButton);

    /**
    * 根据ID查询
    * @author fenghaijun
    * @date 2024-07-19 09:18:06
    * @param id
    * @return WorkflowNodeButton
    */
    WorkflowNodeButton findWorkflowNodeButtonById(String id);

    /**
     * 新增
     * @author fenghaijun
     * @date 2024-07-19 09:18:06
     * @param workflowNodeButton workflowNodeButton
     */
    void createWorkflowNodeButton(WorkflowNodeButton workflowNodeButton);

    /**
     * 修改
     * @author fenghaijun
     * @date 2024-07-19 09:18:06
     * @param workflowNodeButton workflowNodeButton
     */
    void updateWorkflowNodeButton(WorkflowNodeButton workflowNodeButton);

    /**
     * 逻辑删除
     * @author fenghaijun
     * @date 2024-07-19 09:18:06
     * @param workflowNodeButton workflowNodeButton
     * @param workflowNodeButtonIds workflowNodeButtonIds
     */
    void deleteWorkflowNodeButton(WorkflowNodeButton workflowNodeButton,String workflowNodeButtonIds);

    /**
    * 物理删除
    * @author fenghaijun
    * @date 2024-07-19 09:18:06
    * @param workflowNodeButtonIds workflowNodeButtonIds
    */
    void physicallyDeleteWorkflowNodeButton(String workflowNodeButtonIds);
}
